namespace SideShow.Driver.ComInterop
{
    using System;
    using System.Runtime.CompilerServices;
    using System.Runtime.InteropServices;

    [ComImport, InterfaceType((short) 1), Guid("394B48C9-BCA0-498F-8E2C-01225464A932")]
    public interface IWDFNamedPropertyStore
    {
        [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)]
        void GetNamedValue([In, MarshalAs(UnmanagedType.LPWStr)] string pszName, out IntPtr pv);
        [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)]
        void SetNamedValue([In, MarshalAs(UnmanagedType.LPWStr)] string pszName, [In] ref IntPtr pv);
        [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)]
        void GetNameCount(out uint pdwCount);
        [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)]
        void GetNameAt([In] uint iProp, [MarshalAs(UnmanagedType.LPWStr)] out string ppwszName);
    }
}

